Node.js MySQL Insert Into

Node.js MySQL

একটি টেবিলে ঢোকান

MySQL-এ একটি টেবিল তৈরি করতে, "INSERT INTO" বিবৃতিটি ব্যবহার করুন।

উদাহরণ

"গ্রাহক" টেবিলে একটি রেকর্ড সন্নিবেশ করান:

let mysql = require('mysql');

let con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  let sql = "INSERT INTO customers (name, address) VALUES ('Company Inc', 'Highway 37')";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("1 record inserted");
  });
});

উপরের কোডটি "demo_db_insert.js" ফাইলে সংরক্ষণ করুন এবং ফাইলটি চালান:

C:\Users\Your Name>node demo_db_insert.js

এটি আপনাকে এই ফলাফল দেবে:

Connected!
1 record inserted

💡গুরুত্বপূর্ণ নোট:

  • কলামের ক্রম:VALUES-এর মানগুলি অবশ্যই কলামগুলির ক্রম অনুসারে মেলে৷
  • ডেটা প্রকার:সন্নিবেশ করা মানগুলি অবশ্যই কলামের ডেটা প্রকারের সাথে মেলে
  • স্ট্রিং মান:স্ট্রিং মান একক উদ্ধৃতি মধ্যে আবদ্ধ করা আবশ্যক

একাধিক রেকর্ড ঢোকানো

একাধিক রেকর্ড সন্নিবেশ করতে, মান সম্বলিত একটি অ্যারে তৈরি করুন এবং sql-এ একটি প্রশ্ন চিহ্ন সন্নিবেশ করুন, যা মান অ্যারে দ্বারা প্রতিস্থাপিত হবে:

INSERT INTO customers (name, address) VALUES ?

উদাহরণ

ডেটা দিয়ে "গ্রাহক" টেবিলটি পূরণ করুন:

let mysql = require('mysql');

let con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  let sql = "INSERT INTO customers (name, address) VALUES ?";
  let values = [
    ['John', 'Highway 71'],
    ['Peter', 'Lowstreet 4'],
    ['Amy', 'Apple st 652'],
    ['Hannah', 'Mountain 21'],
    ['Michael', 'Valley 345'],
    ['Sandy', 'Ocean blvd 2'],
    ['Betty', 'Green Grass 1'],
    ['Richard', 'Sky st 331'],
    ['Susan', 'One way 98'],
    ['Vicky', 'Yellow Garden 2'],
    ['Ben', 'Park Lane 38'],
    ['William', 'Central st 954'],
    ['Chuck', 'Main Road 989'],
    ['Viola', 'Sideway 1633']
  ];
  con.query(sql, [values], function (err, result) {
    if (err) throw err;
    console.log("Number of records inserted: " + result.affectedRows);
  });
});

উপরের কোডটি "demo_db_insert_multiple.js" ফাইলে সংরক্ষণ করুন এবং ফাইলটি চালান:

C:\Users\Your Name>node demo_db_insert_multiple.js

এটি আপনাকে এই ফলাফল দেবে:

Connected!
Number of records inserted: 14

উপসংহার মানে

একটি ক্যোয়ারী চালানোর সময়, একটি ফলাফল বস্তু ফিরে আসে।

ফলাফল বস্তু ক্যোয়ারী সময়সূচী প্রভাবিত কিভাবে সম্পর্কে তথ্য রয়েছে.

উপরের উদাহরণ থেকে প্রত্যাবর্তিত ফলাফল বস্তু এই মত দেখায়:

{
  fieldCount: 0,
  affectedRows: 14,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,
  message: '\'Records:14  Duplicated: 0  Warnings: 0',
  protocol41: true,
  changedRows: 0
}

বৈশিষ্ট্য মান এই মত প্রদর্শিত হতে পারে:

উদাহরণ

প্রভাবিত সারির সংখ্যা ফেরত দিন:

console.log(result.affectedRows)

এটি এই ফলাফল তৈরি করবে:

14
বৈশিষ্ট্য ব্যাখ্যা
affectedRows ঢোকানো, আপডেট করা বা মুছে ফেলা সারিগুলির সংখ্যা৷
insertId AUTO_INCREMENT কলামের জন্য ID সন্নিবেশ করুন
changedRows আপডেট বিবৃতি দ্বারা পরিবর্তিত সারির সংখ্যা
warningCount ক্যোয়ারী দ্বারা উত্পন্ন সতর্কতা সংখ্যা

সন্নিবেশিত আইডি পুনরুদ্ধার করা হচ্ছে

একটি স্বয়ংক্রিয়-বর্ধিত আইডি ক্ষেত্র সহ সারণির জন্য, আপনি ফলাফল অবজেক্ট জিজ্ঞাসা করে যে সারিটি সন্নিবেশ করেছেন তার আইডি পেতে পারেন৷

⚠️দ্রষ্টব্য:

শুধুমাত্র একটি সারি ঢোকানো প্রয়োজন যাতে সন্নিবেশিত আইডি পুনরুদ্ধার করা যায়।

উদাহরণ

"গ্রাহক" টেবিলে একটি রেকর্ড ঢোকান এবং আইডি ফেরত দিন:

let mysql = require('mysql');

let con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  let sql = "INSERT INTO customers (name, address) VALUES ('Michelle', 'Blue Village 1')";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("1 record inserted, ID: " + result.insertId);
  });
});

উপরের কোডটি "demo_db_insert_id.js" ফাইলে সংরক্ষণ করুন এবং ফাইলটি চালান:

C:\Users\Your Name>node demo_db_insert_id.js

এটি আপনাকে এমন কিছু ফিরিয়ে দেবে:

1 record inserted, ID: 15

উন্নত সন্নিবেশ কৌশল

ভেরিয়েবল দ্বারা সন্নিবেশ

ভেরিয়েবল ব্যবহার করে মান সন্নিবেশ করান:

const name = "John Doe";
const address = "123 Main Street";
const sql = "INSERT INTO customers (name, address) VALUES (?, ?)";
con.query(sql, [name, address], function (err, result) {
  if (err) throw err;
  console.log("Record inserted with ID: " + result.insertId);
});

ত্রুটি হ্যান্ডলিং সঙ্গে সন্নিবেশ

সঠিক ত্রুটি পরিচালনার সাথে সন্নিবেশ করুন:

con.query("INSERT INTO customers (name, address) VALUES (?, ?)", 
  ["John", "123 Street"], 
  function (err, result) {
    if (err) {
      console.error("Error inserting record:", err.message);
      return;
    }
    console.log("Record inserted successfully. ID:", result.insertId);
  }
);

একবারে একাধিক সন্নিবেশ

একবারে একাধিক টেবিলে ঢোকান:

// Insert into multiple tables
const customerSQL = "INSERT INTO customers (name, email) VALUES (?, ?)";
const orderSQL = "INSERT INTO orders (customer_id, amount) VALUES (?, ?)";

con.query(customerSQL, ["John", "john@example.com"], function (err, result) {
  if (err) throw err;
  const customerId = result.insertId;
  
  // Now insert into orders table
  con.query(orderSQL, [customerId, 100.50], function (err, result) {
    if (err) throw err;
    console.log("Customer and order created successfully");
  });
});

সন্নিবেশের জন্য সর্বোত্তম অনুশীলন

নিরাপত্তা

  • SQL ইনজেকশন প্রতিরোধ করতে প্রশ্ন চিহ্ন স্পেস ব্যবহার করুন
  • সর্বদা ব্যবহারকারীর ইনপুট যাচাই করুন
  • ডেটা ক্লিনজিং ফাংশন ব্যবহার করুন
  • স্পষ্টভাবে ত্রুটি বার্তা প্রদর্শন করবেন না

কর্মক্ষমতা

  • বড় সন্নিবেশের জন্য একটি বহু-সারি সন্নিবেশ ব্যবহার করুন
  • অপ্রয়োজনীয় সন্নিবেশ এড়িয়ে চলুন
  • ঘন ঘন সন্নিবেশের জন্য সংযোগ পুলিং ব্যবহার করুন
  • বড় ডেটা সেটের জন্য ব্যাচ সন্নিবেশ ব্যবহার করুন

ডেটা অখণ্ডতা

  • ডাটাবেসের সীমাবদ্ধতাকে সম্মান করুন
  • অপরিবর্তিত তথ্য সন্নিবেশ নিশ্চিত করুন
  • বিদেশী মূল সম্পর্ক বজায় রাখুন
  • অনন্য নিয়ন্ত্রণ পরীক্ষা করুন

সম্পূর্ণ উদাহরণ

সমস্ত সন্নিবেশ কৌশলগুলিকে কভার করে সম্পূর্ণ উদাহরণ:

const mysql = require('mysql');

// Create connection
const con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "password",
  database: "company_db"
});

// Connect to MySQL
con.connect((err) => {
  if (err) {
    console.error('Error connecting to MySQL:', err.message);
    return;
  }
  
  console.log('Connected to MySQL database');
  
  // Single record insertion
  const singleRecordSQL = "INSERT INTO employees (first_name, last_name, email, salary) VALUES (?, ?, ?, ?)";
  const singleValues = ["John", "Doe", "john.doe@company.com", 50000.00];
  
  con.query(singleRecordSQL, singleValues, (err, result) => {
    if (err) {
      console.error('Error inserting single record:', err.message);
      con.end();
      return;
    }
    
    console.log(`Single record inserted with ID: ${result.insertId}`);
    
    // Multiple records insertion
    const multipleRecordsSQL = "INSERT INTO employees (first_name, last_name, email, salary) VALUES ?";
    const multipleValues = [
      ["Jane", "Smith", "jane.smith@company.com", 55000.00],
      ["Bob", "Johnson", "bob.johnson@company.com", 60000.00],
      ["Alice", "Brown", "alice.brown@company.com", 52000.00]
    ];
    
    con.query(multipleRecordsSQL, [multipleValues], (err, result) => {
      if (err) {
        console.error('Error inserting multiple records:', err.message);
        con.end();
        return;
      }
      
      console.log(`Multiple records inserted. Affected rows: ${result.affectedRows}`);
      
      // Show all employees
      con.query("SELECT * FROM employees", (err, results) => {
        if (err) {
          console.error('Error fetching employees:', err.message);
          con.end();
          return;
        }
        
        console.log('\nAll employees:');
        results.forEach(employee => {
          console.log(`ID: ${employee.id}, Name: ${employee.first_name} ${employee.last_name}, Email: ${employee.email}, Salary: ${employee.salary}`);
        });
        
        // Close connection
        con.end((err) => {
          if (err) {
            console.error('Error closing connection:', err.message);
            return;
          }
          console.log('\nConnection closed');
        });
      });
    });
  });
});

অনুশীলন করুন

সঠিক বৈশিষ্ট্য নাম নির্বাচন করুন.

পদার্থের ফলাফল______অ্যাট্রিবিউট দেখায় কতগুলি সারি একটি প্রশ্নের দ্বারা প্রভাবিত হয়েছিল।

changedRows
✗ ভুল! "পরিবর্তিতRows" বৈশিষ্ট্যটি আপডেট বিবৃতি দ্বারা পরিবর্তিত সারিগুলি দেখায়, ঢোকানো সারিগুলি নয়
insertedRows
✗ ভুল! Node.js mysql মডিউলে "insertedRows" একটি বৈধ বৈশিষ্ট্য নয়
affectedRows
✓ ঠিক আছে! "প্রভাবিতRows" বৈশিষ্ট্যটি একটি প্রশ্নের দ্বারা সন্নিবেশিত, আপডেট করা বা মুছে ফেলা সারিগুলির মোট সংখ্যা দেখায়। INSERT বিবৃতিগুলির জন্য, এটি সফলভাবে সন্নিবেশিত সারিগুলির সংখ্যা নির্দেশ করে৷
rowCount
✗ ভুল! Node.js mysql মডিউলে "rowCount" একটি বৈধ বৈশিষ্ট্য নয়